Apache NiFi ডেটা ফ্লো ম্যানেজমেন্ট এবং প্রসেসিং টুল হিসেবে বিভিন্ন ধরণের ডেটা ফরম্যাট এবং ট্রান্সফর্মেশন চাহিদা পূরণ করতে সাহায্য করে। Data Transformation এবং Routing NiFi এর অন্যতম শক্তিশালী বৈশিষ্ট্য, যা ডেটার গুণাবলী পরিবর্তন ও রূপান্তর, এবং সেগুলিকে নির্দিষ্ট দিশায় রাউট করার কাজ করে।
Data Transformation in Apache NiFi
Data Transformation হল ডেটার এক ফরম্যাট থেকে অন্য ফরম্যাটে রূপান্তর। NiFi বিভিন্ন ধরনের ডেটা রূপান্তর করতে সাহায্য করে, যেমন JSON থেকে XML, CSV থেকে JSON, বা সাধারণ টেক্সট ফাইল থেকে কাঙ্খিত ডেটাবেস ফরম্যাটে রূপান্তর।
১. ConvertRecord Processor
- কাজ: এটি বিভিন্ন ডেটা ফরম্যাটের মধ্যে রূপান্তর করতে ব্যবহৃত হয়। যেমন, JSON থেকে XML, CSV থেকে JSON, বা Avro থেকে JSON ইত্যাদি।
- ব্যবহার: JSON ডেটাকে XML ফরম্যাটে রূপান্তর করতে
ConvertRecordProcessor ব্যবহার করা যেতে পারে।
কনফিগারেশন:
- Record Reader: এটি ইনপুট ডেটার ফরম্যাট নির্ধারণ করে (যেমন JSON, CSV)।
- Record Writer: এটি আউটপুট ডেটার কাঙ্ক্ষিত ফরম্যাট নির্ধারণ করে (যেমন XML, JSON)।
উদাহরণ: JSON থেকে CSV রূপান্তর:
Record Reader: JSONReader
Record Writer: CSVRecordSetWriter
২. JoltTransformJSON Processor
- কাজ: এটি JSON ডেটার গঠন পরিবর্তন করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, JSON এর একটি নির্দিষ্ট ফিল্ডের নাম পরিবর্তন বা গঠন পুনর্গঠন করা।
- ব্যবহার:
JoltTransformJSONProcessor ব্যবহার করে JSON ডেটার গঠন পরিবর্তন করা যাবে।
কনফিগারেশন:
- Jolt Specification: এটি JSON ডেটার রূপান্তর বা ট্রান্সফরমেশন স্পেসিফিকেশন সংজ্ঞায়িত করে।
উদাহরণ: JSON ডেটার একটি ফিল্ড নাম পরিবর্তন:
[
{
"operation": "shift",
"spec": {
"name": "full_name"
}
}
]
৩. UpdateAttribute Processor
- কাজ: এটি ডেটার অ্যাট্রিবিউট পরিবর্তন করে, যেমন ফাইলের নাম বা টাইপ আপডেট করা।
- ব্যবহার:
UpdateAttributeProcessor ব্যবহার করে ডেটার কিছু মেটাডেটা বা অ্যাট্রিবিউট পরিবর্তন করা যায়।
কনফিগারেশন:
- Attribute Name: পরিবর্তন করতে চাওয়া অ্যাট্রিবিউটের নাম।
- Value: নতুন অ্যাট্রিবিউটের মান।
Routing Data in Apache NiFi
Routing হল ডেটাকে বিভিন্ন রাউটে (পথে) পাঠানোর প্রক্রিয়া, যা ডেটার গুণাবলী বা শর্তের উপর ভিত্তি করে করা হয়। NiFi তে ডেটা রাউটিং সাধারণত Attributes এবং Relationships এর মাধ্যমে পরিচালিত হয়।
১. RouteOnAttribute Processor
- কাজ: এটি ডেটার অ্যাট্রিবিউটের ভিত্তিতে ডেটা বিভিন্ন রাউটে পাঠায়। উদাহরণস্বরূপ, আপনি একটি অ্যাট্রিবিউট চেক করে ডেটাকে আলাদা আলাদা রিলেশনশিপে পাঠাতে পারেন।
- ব্যবহার: একটি ফাইলের অ্যাট্রিবিউট চেক করা এবং তার ভিত্তিতে ডেটাকে ভিন্ন রিলেশনশিপে পাঠানো।
কনফিগারেশন:
- Property Name: চেক করতে চাওয়া অ্যাট্রিবিউটের নাম।
- Value: যে মানটি অ্যাট্রিবিউটে থাকতে হবে।
- Relationship Names: যদি শর্ত মেলে তবে ডেটাকে যে রিলেশনশিপে পাঠানো হবে।
উদাহরণ: যদি ডেটার অ্যাট্রিবিউট status এর মান "active" হয়, তাহলে একটি রিলেশনশিপে পাঠানো হবে এবং যদি "inactive" হয়, তবে অন্য রিলেশনশিপে পাঠানো হবে।
২. RouteOnContent Processor
- কাজ: এটি ডেটার কনটেন্টের ভিত্তিতে রাউটিং করে। উদাহরণস্বরূপ, একটি JSON ডেটার ভিতরে বিশেষ কোন কিওয়ারি বা ভ্যালু আছে কিনা তা চেক করা।
- ব্যবহার:
RouteOnContentProcessor ব্যবহার করে ডেটার কনটেন্টের ভিত্তিতে ডেটা রাউটিং করা যায়।
কনফিগারেশন:
- Search Value: কনটেন্টের মধ্যে যে ভ্যালু খুঁজতে হবে।
উদাহরণ: একটি JSON ডেটার ভিতরে "type": "json" থাকলে, এটি একটি রিলেশনশিপে যাবে, আর অন্যথায় অন্য রিলেশনশিপে যাবে।
৩. SplitJson Processor
- কাজ: এটি JSON ডেটাকে আলাদা করে ছোট ছোট অংশে ভাগ করে, যাতে প্রতিটি অংশ আলাদাভাবে প্রসেস করা যায়।
- ব্যবহার: একটি বড় JSON ডেটাকে ভেঙে ছোট ছোট JSON অংশে পরিণত করা।
কনফিগারেশন:
- JSONPath Expression: যে অংশটি বিভক্ত করতে হবে তার জন্য JSONPath এক্সপ্রেশন ব্যবহার করা হবে।
Data Transformation এবং Routing এর ব্যবহার ক্ষেত্র
- ইন্টিগ্রেশন সিস্টেম: বিভিন্ন ডেটা উৎস থেকে ডেটা সংগ্রহ এবং রূপান্তর করে, তারপর তা নির্দিষ্ট সিস্টেমে পাঠানো।
- লগ এবং ইভেন্ট প্রসেসিং: লগ ফাইল থেকে ডেটা সংগ্রহ, রূপান্তর এবং বিভিন্ন সার্ভারে রাউটিং করা।
- ইনফরমেশন ফ্লো: ডেটাকে বিভিন্ন শর্ত অনুযায়ী বিভিন্ন অবস্থানে বা সিস্টেমে পাঠানো।
সারাংশ
Apache NiFi তে Data Transformation এবং Routing দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডেটাকে রূপান্তরিত এবং রাউট করার জন্য ব্যবহৃত হয়। Processors এর মাধ্যমে বিভিন্ন ডেটা ফরম্যাটে রূপান্তর এবং ডেটার গুণাবলী বা কনটেন্টের ভিত্তিতে রাউটিং করা সম্ভব। এটি একটি শক্তিশালী টুল যা ডেটা ফ্লো ডিজাইন ও পরিচালনা করতে সাহায্য করে, এবং বিভিন্ন ডেটা ইন্টিগ্রেশন ও প্রসেসিং প্রক্রিয়াতে ব্যবহৃত হয়।
অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ফ্লো ম্যানেজমেন্ট টুল যা ডেটা ফ্লো পরিচালনা, প্রক্রিয়া এবং রুটিংয়ের জন্য ব্যবহৃত হয়। নিফাইতে Content-based Routing বা কনটেন্ট-ভিত্তিক রাউটিং ডেটার বিষয়বস্তু বা অ্যাট্রিবিউটের ভিত্তিতে ডেটাকে বিভিন্ন রুটে পাঠানোর পদ্ধতি। এটি ডেটা ফ্লো ম্যানেজমেন্টে অত্যন্ত কার্যকরী, যেখানে নির্দিষ্ট শর্তে ডেটা একাধিক প্রোসেসরের মধ্যে রাউট করা হয়।
নিফাইয়ে RouteOnAttribute এবং RouteOnContent প্রোসেসর দুটি কনটেন্ট-ভিত্তিক রাউটিংয়ের জন্য ব্যবহৃত হয়। এগুলোর সাহায্যে ডেটার উপাদান বা অ্যাট্রিবিউটের উপর ভিত্তি করে সিদ্ধান্ত নেওয়া হয় কিভাবে ডেটাকে রাউট করা হবে।
RouteOnAttribute
RouteOnAttribute প্রোসেসর ব্যবহার করে আপনি ডেটার অ্যাট্রিবিউট (যেমন ফাইলের নাম, টাইপ, সাইজ) এর ভিত্তিতে ডেটা রাউট করতে পারেন। এটি ডেটার ইনপুট অ্যাট্রিবিউটের শর্ত অনুযায়ী রাউটিং সিদ্ধান্ত নেয়।
ব্যবহার
- Input: ডেটার অ্যাট্রিবিউটগুলি
- Process: নির্দিষ্ট শর্ত বা এক্সপ্রেশন অনুযায়ী রাউটিং
- Output: শর্তানুযায়ী বিভিন্ন রুটে ডেটা প্রেরণ
কনফিগারেশন
- Dynamic Properties: এখানে আপনি অ্যাট্রিবিউট ভিত্তিক শর্ত নির্ধারণ করতে পারেন। উদাহরণস্বরূপ:
filename matches '^.*.csv$'(ফাইলের নাম যদি.csvএক্সটেনশনে থাকে)contentType == 'application/json'(যদি কনটেন্ট টাইপ JSON হয়)
উদাহরণ
ধরা যাক, আপনি একটি ফাইল নামের ভিত্তিতে রাউট করতে চান, যেখানে .csv ফাইলগুলিকে একটি রুটে এবং .json ফাইলগুলিকে অন্য একটি রুটে পাঠাতে চান।
- RouteOnAttribute প্রোসেসর কনফিগার করুন:
- Property:
filename matches '^.*\.csv$' - Property:
filename matches '^.*\.json$'
- Property:
এখন, .csv ফাইলগুলি এক রুটে এবং .json ফাইলগুলি অন্য রুটে যাবে।
RouteOnContent
RouteOnContent প্রোসেসরটি ডেটার আসল কনটেন্ট বা বিষয়বস্তু বিশ্লেষণ করে রাউটিং সিদ্ধান্ত নেয়। এটি কনটেন্টের মধ্যে নির্দিষ্ট শব্দ বা প্যাটার্নের জন্য অনুসন্ধান করতে পারে এবং সেই অনুযায়ী ডেটা রাউট করে।
ব্যবহার
- Input: ডেটার কনটেন্ট (যেমন ফাইলের ভিতরের তথ্য)
- Process: কনটেন্ট বিশ্লেষণ করে রাউটিং সিদ্ধান্ত
- Output: কনটেন্টের ভিত্তিতে ডেটা রাউট করা হয়
কনফিগারেশন
- Search Expression: কনটেন্টে কী খুঁজে বের করতে হবে। উদাহরণস্বরূপ:
contains('error')(যদি কনটেন্টে 'error' শব্দটি থাকে)contains('success')(যদি কনটেন্টে 'success' শব্দটি থাকে)
উদাহরণ
ধরা যাক, আপনি একটি ফাইলের কনটেন্ট বিশ্লেষণ করতে চান এবং যদি কনটেন্টে "error" থাকে, তাহলে তা একটি রুটে এবং "success" থাকলে তা অন্য একটি রুটে পাঠাতে চান।
- RouteOnContent প্রোসেসর কনফিগার করুন:
- Property:
contains('error') - Property:
contains('success')
- Property:
এখন, "error" কনটেন্টযুক্ত ফাইলগুলি এক রুটে এবং "success" কনটেন্টযুক্ত ফাইলগুলি অন্য রুটে যাবে।
RouteOnAttribute এবং RouteOnContent এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | RouteOnAttribute | RouteOnContent |
|---|---|---|
| রাউটিং শর্ত | ডেটার অ্যাট্রিবিউটের ভিত্তিতে (যেমন ফাইল নাম, কনটেন্ট টাইপ) | ডেটার কনটেন্ট বা ভেতরের বিষয়বস্তু বিশ্লেষণ করে |
| শর্ত নির্ধারণ | অ্যাট্রিবিউটের মানের সাথে মিলিয়ে শর্ত দেওয়া হয় | কনটেন্টের মধ্যে প্যাটার্ন বা শব্দ খুঁজে শর্ত দেওয়া হয় |
| ব্যবহার | ফাইলের নাম, সাইজ, টাইপ, অথবা মেটাডেটার ভিত্তিতে রাউটিং | ফাইল বা ডেটার মধ্যে নির্দিষ্ট প্যাটার্ন বা শব্দ খুঁজে রাউটিং |
সারাংশ
অ্যাপাচি নিফাইতে RouteOnAttribute এবং RouteOnContent প্রোসেসর দুটি কনটেন্ট-ভিত্তিক রাউটিংয়ের জন্য ব্যবহৃত হয়। RouteOnAttribute প্রোসেসর ডেটার অ্যাট্রিবিউটের ভিত্তিতে রাউটিং সিদ্ধান্ত নেয়, যেখানে RouteOnContent কনটেন্টের ভিতরের তথ্য বিশ্লেষণ করে রাউটিং করে। এই দুটি প্রোসেসরের মাধ্যমে আপনি সহজেই ডেটা ফ্লোতে কনটেন্ট বা অ্যাট্রিবিউটের ভিত্তিতে শর্ত নির্ধারণ করতে পারেন এবং ডেটাকে সঠিক রুটে পাঠাতে পারেন।
অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা প্রবাহ অটোমেশন প্ল্যাটফর্ম যা ডেটার প্রোসেসিং, ফিল্টারিং, এবং রাউটিং পরিচালনা করতে সক্ষম। নিফাই তে ডেটা ফিল্টারিং এবং স্প্লিট/জয়েন প্রোসেসর ব্যবহার করে আপনি ডেটার অপ্রয়োজনীয় অংশ বাদ দিতে, ডেটা ভাগ করতে এবং একত্রিত করতে পারেন। এখানে আমরা এই প্রোসেসরগুলির কিছু গুরুত্বপূর্ণ ব্যবহার নিয়ে আলোচনা করব।
ডেটা ফিল্টারিং (Data Filtering)
ডেটা ফিল্টারিং এমন একটি প্রক্রিয়া যেখানে আপনি নির্দিষ্ট শর্তের ভিত্তিতে ডেটা ফিল্টার করে প্রয়োজনীয় অংশে সীমাবদ্ধ রাখেন। নিফাই তে কয়েকটি প্রোসেসর ব্যবহার করে আপনি ডেটা ফিল্টার করতে পারেন।
১. RouteOnAttribute
RouteOnAttribute প্রোসেসরটি ফ্লোফাইলের অ্যাট্রিবিউটের ভিত্তিতে ডেটা রাউট করে। এটি একটি গুরুত্বপূর্ণ ফিল্টারিং প্রোসেসর যা ডেটার নির্দিষ্ট অ্যাট্রিবিউট বা বৈশিষ্ট্যের উপর ভিত্তি করে ডেটার রাউটিং সিদ্ধান্ত নেয়।
- ব্যবহার: অ্যাট্রিবিউটের ভিত্তিতে ডেটা ফিল্টার বা রাউটিং।
- কনফিগারেশন: শর্ত (conditions) সেট করতে হবে, যেমন
status = successঅথবাtype = csv।
এই প্রোসেসরটি নির্দিষ্ট অ্যাট্রিবিউটের ভিত্তিতে ডেটা রাউট বা ফিল্টার করবে।
২. UpdateAttribute
UpdateAttribute প্রোসেসরটি ফ্লোফাইলের অ্যাট্রিবিউট আপডেট করার জন্য ব্যবহৃত হয়। আপনি ফিল্টার করার জন্য অ্যাট্রিবিউটের মান পরিবর্তন করতে বা নতুন অ্যাট্রিবিউট যোগ করতে পারেন।
- ব্যবহার: অ্যাট্রিবিউট আপডেট করা এবং ফিল্টারিং শর্ত অনুযায়ী মান নির্ধারণ।
- কনফিগারেশন: অ্যাট্রিবিউটের নতুন মান বা কন্ডিশন সেট করতে হবে।
এই প্রোসেসরটি ফ্লোফাইলের অ্যাট্রিবিউট আপডেট করে বা নির্দিষ্ট শর্তে ফিল্টার করে।
৩. ExecuteScript
ExecuteScript প্রোসেসরটি স্ক্রিপ্ট চালানোর জন্য ব্যবহৃত হয়, যেমন জাভাস্ক্রিপ্ট বা পাইথন। এটি কাস্টম ফিল্টারিং শর্তে ডেটা প্রোসেসিং করার জন্য উপযোগী।
- ব্যবহার: কাস্টম স্ক্রিপ্টের মাধ্যমে ডেটা ফিল্টারিং।
- কনফিগারেশন: স্ক্রিপ্ট কোড এবং শর্ত সেট করতে হবে।
এই প্রোসেসরটি কাস্টম স্ক্রিপ্ট ব্যবহার করে ডেটা ফিল্টার করার জন্য ব্যবহৃত হবে।
ডেটা স্প্লিটিং এবং জয়েনিং (Data Splitting and Joining)
নিফাই তে ডেটা স্প্লিটিং এবং জয়েনিং করা খুবই গুরুত্বপূর্ণ যখন আপনি বড় ফাইল বা ডেটা সাইজ নিয়ে কাজ করেন এবং সেগুলিকে ছোট টুকরোতে ভাগ করতে চান অথবা একাধিক টুকরা একত্রিত করতে চান।
১. SplitText
SplitText প্রোসেসরটি একটি বড় টেক্সট ফাইল বা ডেটা স্ট্রিমকে ছোট ছোট অংশে ভাগ করতে ব্যবহৃত হয়। এটি সাধারণত লাইন বা স্ট্রিংয়ের ভিত্তিতে ডেটা ভাগ করে।
- ব্যবহার: বড় টেক্সট ফাইল বা ডেটা লাইন বা ব্লকে ভাগ করা।
- কনফিগারেশন: ভাগ করার পদ্ধতি (যেমন প্রতি লাইন বা নির্দিষ্ট সাইজে ভাগ করা) নির্ধারণ করা।
এই প্রোসেসরটি একটি বড় টেক্সট ডেটা বা ফাইলকে ছোট ছোট টুকরোতে ভাগ করবে।
২. SplitContent
SplitContent প্রোসেসরটি কনটেন্ট বা ডেটা প্যাকেটকে ছোট ব্লকে ভাগ করে। এটি ফাইলের কন্টেন্টের সাইজ নির্ধারণের মাধ্যমে ডেটাকে স্প্লিট করতে সক্ষম।
- ব্যবহার: কন্টেন্ট বা ডেটা প্যাকেট ভাগ করা।
- কনফিগারেশন: প্রতিটি ব্লকের সাইজ বা সংখ্যার উপর ভিত্তি করে ডেটা ভাগ করা।
এই প্রোসেসরটি কন্টেন্টকে নির্দিষ্ট আকারের ব্লকে ভাগ করবে।
৩. MergeContent
MergeContent প্রোসেসরটি একাধিক ফ্লোফাইলকে একত্রিত করে একটি একক ফাইল বা কন্টেন্টে পরিণত করে। এটি ডেটাকে পুনঃসংকলন এবং একত্রিত করার জন্য ব্যবহৃত হয়।
- ব্যবহার: একাধিক ফ্লোফাইল বা ডেটা টুকরোকে একত্রিত করা।
- কনফিগারেশন: মার্জিং পদ্ধতি এবং শর্ত নির্বাচন করা।
এই প্রোসেসরটি একাধিক ডেটা ফ্লোকে একত্রিত করে একটি একক কন্টেন্ট তৈরি করবে।
৪. MergeRecord
MergeRecord প্রোসেসরটি রেকর্ড ডেটাকে একত্রিত করতে ব্যবহৃত হয়। এটি বিশেষভাবে বিভিন্ন ফরম্যাটে রেকর্ড ডেটা (যেমন JSON, CSV) একত্রিত করতে ব্যবহৃত হয়।
- ব্যবহার: রেকর্ড ভিত্তিক ডেটা একত্রিত করা।
- কনফিগারেশন: ইনপুট রেকর্ড ফরম্যাট এবং আউটপুট ফরম্যাট নির্ধারণ করতে হবে।
এই প্রোসেসরটি রেকর্ড ভিত্তিক ডেটাকে একত্রিত করতে ব্যবহৃত হবে।
সারাংশ
অ্যাপাচি নিফাই তে ডেটা ফিল্টারিং এবং স্প্লিট/জয়েন প্রোসেসরগুলি ডেটার কার্যকরী প্রক্রিয়া এবং ব্যবস্থাপনার জন্য অত্যন্ত গুরুত্বপূর্ণ। ডেটা ফিল্টারিংয়ের মাধ্যমে আপনি অপ্রয়োজনীয় ডেটা বাদ দিতে পারেন এবং স্প্লিট/জয়েন প্রোসেসরগুলির মাধ্যমে ডেটাকে সহজে ভাগ বা একত্রিত করতে পারেন, যা ডেটার প্রোসেসিং আরও কার্যকর এবং দক্ষ করে তোলে।
অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ইন্টিগ্রেশন টুল, যা ডেটা ফ্লো তৈরি, প্রক্রিয়া এবং পরিচালনা করার জন্য বিভিন্ন প্রোসেসরের মাধ্যমে কাজ করে। ডেটা এনরিচমেন্ট (Data Enrichment) এবং লুকআপ (Lookup) প্রোসেসরগুলি বিশেষভাবে ডেটার মান বৃদ্ধি বা অন্যান্য উৎস থেকে অতিরিক্ত তথ্য যোগ করার জন্য ব্যবহৃত হয়। এগুলি বড় আকারের ডেটা ইন্টিগ্রেশন এবং ট্রান্সফরমেশন কাজে সহায়ক।
ডেটা এনরিচমেন্ট (Data Enrichment)
ডেটা এনরিচমেন্ট হল একটি প্রক্রিয়া যেখানে একটি ডেটাসেটকে অতিরিক্ত তথ্য দিয়ে সমৃদ্ধ করা হয়, যা মূল ডেটাসেটের মান বৃদ্ধি করে। নিফাইতে ডেটা এনরিচমেন্ট সাধারণত অন্য ডেটা উৎস থেকে তথ্য সংগ্রহের মাধ্যমে করা হয়। উদাহরণস্বরূপ, একটি CSV বা ডাটাবেস থেকে তথ্য লুকআপ করে ফিচার যুক্ত করা।
ডেটা এনরিচমেন্ট প্রোসেসর
LookupRecordProcessor
LookupRecordProcessorনিফাইয়ের একটি শক্তিশালী প্রোসেসর যা বিভিন্ন ডেটা উৎস (যেমন ডাটাবেস, হ্যাশম্যাপ, CSV) থেকে তথ্য লুকআপ করে। এটি বিশেষভাবে ব্যবহৃত হয় যখন ডেটার সাথে অন্যান্য সোর্স থেকে মান যুক্ত করতে হয়।উদাহরণ:
- আপনার কাছে একটি লিস্ট আছে যেখানে নাম এবং ইমেইল রয়েছে, এবং আপনি ডেটাবেস থেকে সংশ্লিষ্ট ব্যবহারকারীর আইডি লুকআপ করতে চান।
LookupRecordProcessor lookupProcessor = new LookupRecordProcessor(); lookupProcessor.setLookupService(myLookupService); // Lookup service সংযোগ lookupProcessor.onTrigger(context, session); // Trigger method কলUpdateRecordProcessor
UpdateRecordProcessorএকটি অপরিহার্য প্রোসেসর যা ডেটার মধ্যে পরিবর্তন করে নতুন ফিল্ড বা মান যোগ করতে পারে। এটি প্রক্রিয়া করা রেকর্ডের মধ্যে এনরিচমেন্ট করতে সহায়ক।উদাহরণ:
- আপনি একটি ফাইল থেকে ডেটা পড়ছেন এবং ঐ ডেটা ফিল্ডের উপর ভিত্তি করে নতুন মান যোগ করতে চান।
UpdateRecordProcessor updateProcessor = new UpdateRecordProcessor(); updateProcessor.addReplacement("fieldName", "newValue"); // নির্দিষ্ট ফিল্ডে মান যোগ করা
লুকআপ (Lookup) প্রোসেসর
লুকআপ প্রোসেসরগুলি নিফাইয়ের এমন প্রোসেসর যা ইনপুট ডেটার জন্য অতিরিক্ত তথ্য সংগ্রহ করে এবং তা আউটপুট ডেটাতে যোগ করে। এই প্রোসেসরগুলির মাধ্যমে আপনি একটি ডেটা উৎস (যেমন ডাটাবেস, ফাইল, API) থেকে ডেটা সংগ্রহ করে ফিল্টার বা প্রক্রিয়া করতে পারেন।
লুকআপ প্রোসেসরের উদাহরণ
LookupService
LookupServiceএকটি ইন্টারফেস যা নিফাইয়ে লুকআপ প্রোসেসরের জন্য কাস্টম লুকআপ সার্ভিস তৈরি করার সুযোগ প্রদান করে। এই সার্ভিসটি লুকআপের জন্য বিভিন্ন প্রকার কনফিগারেশন যেমন ডেটাবেস, ক্যাশিং সার্ভিস বা এক্সটার্নাল API ব্যবহার করতে পারে।উদাহরণ:
- ডাটাবেস বা CSV ফাইল থেকে তথ্য লুকআপ করার জন্য আপনি
LookupServiceইন্টারফেস ব্যবহার করতে পারেন।
LookupService dbLookupService = new DatabaseLookupService();- ডাটাবেস বা CSV ফাইল থেকে তথ্য লুকআপ করার জন্য আপনি
ExecuteSQLProcessor
ExecuteSQLProcessorপ্রোসেসরটি একটি SQL কুয়েরি চালাতে সক্ষম, যা ডেটাবেসে তথ্য অনুসন্ধান করে এবং ডেটাবেস থেকে প্রাপ্ত ডেটা নিফাই ফ্লোতে যোগ করে। এটি লুকআপ অপারেশন হিসেবে ব্যবহার করা যায় যখন ডেটাবেস থেকে তথ্য যোগ করার প্রয়োজন হয়।উদাহরণ:
- একটি SQL কুয়েরি ব্যবহার করে ডেটাবেস থেকে নির্দিষ্ট তথ্য পেতে।
ExecuteSQLProcessor sqlProcessor = new ExecuteSQLProcessor(); sqlProcessor.setSqlQuery("SELECT * FROM users WHERE email = :email");GetFileProcessor
GetFileProcessorফাইল সিস্টেম থেকে ডেটা পেতে ব্যবহার করা হয়, এবং এটি লুকআপ অপারেশন হিসেবে কাজ করতে পারে যখন ফাইল থেকে কিছু তথ্য সংগ্রহ করতে হয়।উদাহরণ:
- নির্দিষ্ট ফাইল বা ডিরেক্টরি থেকে তথ্য সংগ্রহ করে লুকআপ অপারেশন সম্পন্ন করা।
GetFileProcessor fileProcessor = new GetFileProcessor(); fileProcessor.setDirectory("/path/to/directory");
Data Enrichment এবং Lookup Processors কনফিগারেশন
LookupService Configuration
যদি আপনিLookupRecordProcessorব্যবহার করছেন, তাহলে আপনাকে একটিLookupServiceকনফিগার করতে হবে যা নির্দিষ্ট ডেটাবেস বা ফাইল থেকে তথ্য লুকআপ করবে। এটির জন্য একটি কনফিগারেশন ফাইল তৈরি করতে হবে যা ডেটাবেস কানেকশন স্ট্রিং, ইউজারনেম, পাসওয়ার্ড ইত্যাদি অন্তর্ভুক্ত করবে।উদাহরণ:
- ডেটাবেস থেকে তথ্য লুকআপ করতে একটি
DatabaseLookupServiceকনফিগার করা।
lookupService = org.apache.nifi.lookup.DatabaseLookupService database.connection.url = jdbc:mysql://localhost:3306/mydb- ডেটাবেস থেকে তথ্য লুকআপ করতে একটি
Custom LookupProcessor
কাস্টম লুকআপ প্রোসেসর তৈরি করার সময়, আপনাকে এই প্রোসেসরটির জন্য ইনপুট এবং আউটপুট ফিল্ডগুলির মধ্যে সম্পর্ক এবং লুকআপ অপারেশন কনফিগার করতে হবে।public class CustomLookupProcessor extends AbstractProcessor { @Override public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException { // লুকআপ সার্ভিস ব্যবহার করে লুকআপ প্রক্রিয়া String lookupValue = context.getProperty("lookupField").getValue(); String result = myLookupService.lookup(lookupValue); // আউটপুটে প্রক্রিয়াকৃত মান সংযুক্ত করা FlowFile flowFile = session.get(); session.putAttribute(flowFile, "lookupResult", result); session.transfer(flowFile, SUCCESS); } }
সারাংশ
অ্যাপাচি নিফাইতে ডেটা এনরিচমেন্ট এবং লুকআপ প্রোসেসরগুলি বিশেষভাবে ডেটা ফ্লোতে অতিরিক্ত তথ্য যোগ করার জন্য ব্যবহৃত হয়। LookupRecordProcessor এবং UpdateRecordProcessor ডেটার মান উন্নত করার জন্য ব্যবহৃত হয়, যখন ExecuteSQLProcessor এবং GetFileProcessor লুকআপ অপারেশন সম্পন্ন করতে সাহায্য করে। এই প্রোসেসরগুলি বিভিন্ন সোর্স যেমন ডাটাবেস, CSV ফাইল বা API থেকে তথ্য সংগ্রহ করে এবং ডেটা ফ্লোতে সেই তথ্য সংযুক্ত করে। নিফাইতে এই প্রোসেসরগুলির সঠিক কনফিগারেশন ও ব্যবহারে ডেটা প্রক্রিয়া ও ট্রান্সফরমেশন সহজ এবং কার্যকরী হয়ে ওঠে।
অ্যাপাচি নিফাই (Apache NiFi) একটি শক্তিশালী ডেটা ইন্টিগ্রেশন এবং প্রোসেসিং টুল যা ডেটার ফর্ম্যাট রূপান্তর (Data Format Transformation) করার জন্য ব্যবহৃত হয়। JSON, XML, এবং CSV এর মতো সাধারণ ডেটা ফর্ম্যাটগুলির মধ্যে রূপান্তর করা খুবই গুরুত্বপূর্ণ যখন বিভিন্ন সিস্টেম বা অ্যাপ্লিকেশন একে অপরের সাথে ডেটা শেয়ার করে। NiFi এই ডেটা ফর্ম্যাট রূপান্তরের প্রক্রিয়াটি সহজ, দ্রুত এবং নির্ভরযোগ্যভাবে সম্পাদন করতে সক্ষম।
JSON, XML, এবং CSV ফরম্যাটে ডেটা রূপান্তরের প্রক্রিয়া
NiFi তে JSON, XML, এবং CSV ফরম্যাটগুলির মধ্যে ডেটা রূপান্তর করার জন্য নির্দিষ্ট প্রোসেসর এবং কনফিগারেশন ব্যবহার করা হয়। এখানে আমরা এই তিনটি জনপ্রিয় ডেটা ফরম্যাটের মধ্যে রূপান্তর করার জন্য ব্যবহৃত প্রধান প্রোসেসরগুলোর সাথে পরিচিত হবো।
JSON (JavaScript Object Notation)
JSON একটি জনপ্রিয় ডেটা ফরম্যাট যা মানব-পাঠযোগ্য এবং কম্পিউটার-পাঠযোগ্য উভয়ই হয়। এটি সাধারণত ওয়েব সার্ভিস এবং অ্যাপ্লিকেশনগুলির মধ্যে ডেটা ট্রান্সফারের জন্য ব্যবহৃত হয়।
JSON রূপান্তরের প্রোসেসর:
- ConvertRecord: JSON ডেটা থেকে অন্য ফরম্যাটে রূপান্তরের জন্য এই প্রোসেসরটি ব্যবহৃত হয়।
- EvaluateJsonPath: JSON ডেটা থেকে নির্দিষ্ট ক্ষেত্র বের করতে ব্যবহৃত হয়।
- JsonRecordSetWriter: JSON রেকর্ড সেট আউটপুট রূপে লেখার জন্য ব্যবহৃত হয়।
উদাহরণ:
JSON থেকে CSV বা XML এ রূপান্তর করতে, আপনাকে ConvertRecord প্রোসেসর ব্যবহার করতে হবে, যেখানে JsonTreeReader এবং CSVRecordSetWriter বা XMLRecordSetWriter কনফিগার করা যাবে।
XML (Extensible Markup Language)
XML একটি প্ল্যাটফর্ম-স্বাধীন ডেটা ফরম্যাট যা ডেটা সংরক্ষণ এবং সংক্রমণের জন্য ব্যাপকভাবে ব্যবহৃত হয়। এটি ট্যাগভিত্তিক ফরম্যাট, যার মাধ্যমে ডেটা গঠন করা হয়।
XML রূপান্তরের প্রোসেসর:
- ConvertRecord: XML ডেটা থেকে অন্য ফরম্যাটে রূপান্তর করার জন্য এই প্রোসেসরটি ব্যবহৃত হয়।
- EvaluateXPath: XML ডেটার মধ্যে XPath কুয়েরি চালিয়ে তথ্য বের করা যায়।
- XMLRecordSetWriter: XML আউটপুট রেকর্ড তৈরি করার জন্য ব্যবহৃত হয়।
উদাহরণ:
XML থেকে JSON বা CSV রূপান্তর করতে, ConvertRecord প্রোসেসর ব্যবহার করে XMLReader এবং JSONRecordSetWriter বা CSVRecordSetWriter কনফিগার করা যাবে।
CSV (Comma-Separated Values)
CSV একটি সোজা এবং জনপ্রিয় ফরম্যাট যা সাধারণত টেবিল-ভিত্তিক ডেটা সংরক্ষণ করতে ব্যবহৃত হয়। এটি কমা দ্বারা পৃথকীকৃত মানের মাধ্যমে তথ্য সংরক্ষণ করে।
CSV রূপান্তরের প্রোসেসর:
- ConvertRecord: CSV ডেটা থেকে অন্যান্য ফরম্যাটে রূপান্তরের জন্য ব্যবহৃত হয়।
- CSVReader: CSV ফাইল পড়তে ব্যবহৃত হয়।
- CSVRecordSetWriter: CSV আউটপুট রেকর্ড লেখার জন্য ব্যবহৃত হয়।
উদাহরণ:
CSV থেকে JSON বা XML এ রূপান্তর করতে ConvertRecord প্রোসেসর ব্যবহার করা যেতে পারে, যেখানে CSVReader এবং JSONRecordSetWriter বা XMLRecordSetWriter কনফিগার করা যাবে।
NiFi তে JSON, XML এবং CSV এর মধ্যে রূপান্তর করার জন্য সাধারণ স্টেপগুলি
১. প্রোসেসর যোগ করা: প্রথমে NiFi ডেটা ফ্লোতে প্রোসেসর যোগ করুন। যেমন, ConvertRecord, CSVReader, JsonTreeReader, বা XMLReader প্রোসেসর।
২. Input ও Output কনফিগারেশন: ইনপুট ডেটা ফরম্যাট যেমন JSON, XML বা CSV কনফিগার করতে হবে এবং আউটপুট ফরম্যাট হিসাবে অন্যটি নির্বাচন করতে হবে।
৩. Record Reader এবং Writer কনফিগার করা:
- JSON থেকে CSV বা XML রূপান্তরের জন্য JsonTreeReader ব্যবহার করুন এবং CSVRecordSetWriter বা XMLRecordSetWriter কনফিগার করুন।
- XML থেকে JSON বা CSV রূপান্তরের জন্য XMLReader এবং JsonRecordSetWriter বা CSVRecordSetWriter ব্যবহার করুন।
৪. রূপান্তর পরীক্ষা: রূপান্তর সফলভাবে সম্পাদিত হয়েছে কিনা তা নিশ্চিত করতে ডেটা ফ্লো পরীক্ষা করুন। NiFi এর রিয়েল-টাইম মনিটরিং এবং লগিং সিস্টেম আপনাকে রূপান্তরের ফলাফল দেখতে সাহায্য করবে।
সারাংশ
অ্যাপাচি নিফাই JSON, XML, এবং CSV ফরম্যাটের মধ্যে ডেটা রূপান্তর করতে ConvertRecord, CSVReader, JsonTreeReader, এবং XMLReader প্রোসেসর ব্যবহার করে। এটি ডেটা ফরম্যাটের মধ্যে রূপান্তর সম্পন্ন করার জন্য অত্যন্ত শক্তিশালী এবং নমনীয় পদ্ধতি প্রদান করে। JSON, XML এবং CSV রূপান্তরকে সহজ, কার্যকরী এবং দ্রুত করতে এই প্রোসেসরগুলোর সঠিক কনফিগারেশন গুরুত্বপূর্ণ।
Read more